package UI;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;

public class ChatLoginUI extends JFrame implements ActionListener {

    // 定义界面组件
    private JLabel nicknameLabel;
    private JTextField nicknameField;
    private JButton loginButton;
    private JButton cancelButton;
    private Socket socket;

    // 构造方法：初始化界面
    public ChatLoginUI() {
        // 设置窗口标题
        setTitle("聊天室登录界面");

        // 设置窗口大小
        setSize(300, 200);

        // 设置窗口关闭操作（关闭窗口时退出程序）
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // 设置窗口居中显示
        setLocationRelativeTo(null);

        // 创建面板用于放置组件
        JPanel panel = new JPanel();
        panel.setLayout(new FlowLayout());

        // 创建昵称标签
        nicknameLabel = new JLabel("昵称：");
        panel.add(nicknameLabel);

        // 创建昵称输入框
        nicknameField = new JTextField(20);
        panel.add(nicknameField);

        // 创建登录按钮
        loginButton = new JButton("登录");
        loginButton.addActionListener(this); // 绑定事件监听
        panel.add(loginButton);

        // 创建取消按钮
        cancelButton = new JButton("取消");
        cancelButton.addActionListener(this); // 绑定事件监听
        panel.add(cancelButton);

        // 将面板添加到窗口
        add(panel);

        // 设置窗口可见
        setVisible(true);
    }

    // 按钮点击事件处理
    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == loginButton) {
            // 获取输入框内容
            String nickname = nicknameField.getText().trim();

            // 验证昵称是否为空
            if (nickname.isEmpty()) {
                JOptionPane.showMessageDialog(this, "昵称不能为空！", "错误", JOptionPane.ERROR_MESSAGE);
            } else {
                // 实现登录逻辑
                try {
                    loginroom(nickname);
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
                // 这里可以添加跳转到聊天室的逻辑
                new ChatRoomUI(nickname,socket);
                dispose(); // 关闭登录窗口
            }
        } else if (e.getSource() == cancelButton) {
            // 取消按钮点击事件：关闭窗口
            dispose();
        }
    }

    private void loginroom(String nickname) throws Exception {
        //立即将登录消息发送给服务器
        socket = new Socket(ConstantClient.SERVER_IP,ConstantClient.SERVER_PORT);

        DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
        dos.writeInt(ConstantClient.LOGIN);
        dos.writeUTF(nickname);
        dos.flush();
    }
}